package com.test.study.ToolsUtils.java8;

import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

import org.junit.Test;

/**
 * Stream API
 * 
 * @author huyong Stream的三个步骤 1.创建Stream 2.中间操作 3.终止操作(终端操作)
 *
 */
public class StreamLamdba {
	// 创建Stream
	@Test
	public void test() {
		// 方法一:通过 Collection系列集合提供的stream()或paralleStream() 可以获取流
		List<String> list = Arrays.asList("wewe", "解决");
		// stream() 获取串型流
		Stream<String> stream = list.stream();
		// paralleStream() 并行流
		Stream<String> parallelStream = list.parallelStream();
		System.out.println(stream + "======" + parallelStream);
		int[] array = { 5, 6, 4 };
		// 方法二：通过Arrays 中的静态方法stream()获取数组流程
		IntStream intStream = Arrays.stream(array);
		System.out.println(intStream);
		// 方法三:通过Stream类中的静态方法of() 获取
		Stream<String> of = Stream.of("aa", "bb", "cc");
		System.out.println(of);
		// 方法四:创建无限流
		// 迭代 参数一：seed 种子 也就是一个起始值 这时候会一直无限的生产整型的数据
		Stream<Integer> iterate = Stream.iterate(0, (x) -> x + 2);
		iterate.limit(10).forEach(System.out::println);
		// 生成
		Stream.generate(() -> Math.random()).limit(10).forEach(System.out::println);

	}

}
